多 package 的 Rust Workspace 组织和配置。
[TOC]
Cargo 工作空间,可以管理相互关联需要协同开发的的 crate。共享同一个 Cargo.lock 和 输出文件夹。
在工作区目录创建Cargo.lock
,并使用cargo new packageName [—lib]
创建需要的多个 Package。所得工作空间目录结构:
ws
├── adder
│ ├── Cargo.toml
│ └── src
├── add-one
│ ├── Cargo.toml
│ └── src
├── add-two
│ ├── Cargo.toml
│ └── src
├── target
│ ├── CACHEDIR.TAG
│ ├── debug
│ └── tmp
├── Cargo.lock
└── Cargo.toml
将 package 添加到工作空间的成员配置下:
# 工作空间下的 Cargo.toml
[workspace]
members=[
'add-one',
'add-two',
'adder',
]
exclude=[]
注意的问题:
不同 package 中使用的依赖版本会保持一致,配置在工作空间的Cargo.lock
中
不同的 package 中的 crate 的依赖关系需要显示在 package 的 Cargo.toml 中配置:
# Cargo.toml
[package]
name = "add-two"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
add-one = { path = "../add-one" } # relative path
引用add-two
crate 时,rs 源文件使用 add_two 代替(下划线)use add_two::add_fun
构建指定的 crate,可以到该 package 下运行或者指定路径cargo run -p adder
crate 发布时,需要切换指定的 package 文件夹下执行cargo publish
;并且依赖中path
说明会被移除,使用crates.io中的版本。
[dependencies]
add-two = { path = "../add-two", version = "0.1.0" }
本文链接: Rust Workspace
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
发布日期: 2022-06-02
最新构建: 2024-12-26
欢迎任何与文章内容相关并保持尊重的评论😊 !